package org.zjx.model.route;

import com.alibaba.fastjson2.annotation.JSONType;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.zjx.entity.Location;
import org.zjx.enums.route.RouteType;

/**
 * 法宝传送路由类
 * 表示使用法宝进行传送的路径
 */

@JSONType(typeName = "MagicItemRoute")
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
public class MagicItemRoute extends AbstractRoute {
    private int instanceId;  // 法宝道具ID

    /**
     * 构造函数
     *
     * @param start 起点
     * @param end   终点
     */
    public MagicItemRoute(Location start, Location end, int instanceId) {
        super(start, end, 30, RouteType.MAGIC_ITEM, false);
        this.instanceId = instanceId;
    }

    /**
     * 创建反向路由(不支持)
     *
     * @throws UnsupportedOperationException 总是抛出
     */
    @Override
    protected Route createReverseRoute() {
        throw new UnsupportedOperationException("法宝传送不可逆");
    }

    /**
     * 获取路由描述
     *
     * @return 描述字符串
     */
    @Override
    public String getDescription() {
        return String.format("使用#%d从%s传送到%s（%d秒）",
                instanceId, getStart(), getEnd(), getTime());
    }
}